using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Collections;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

namespace Snow
{

    public class KeyCodes
    {

        public enum Modifier : uint
        {
            MOD_ALT = 1,
            MOD_CONTROL = 2,
            MOD_SHIFT = 4,
            MOD_WIN = 8,
            MOD_CONTROL_SHIFT = MOD_CONTROL ^ MOD_SHIFT,
            MOD_CONTROL_ALT = MOD_CONTROL ^ MOD_ALT

        }

        public enum VirtualKey : uint
        {
            VK_0 = 48,
            VK_1 = 49,
            VK_2 = 50,
            VK_3 = 51,
            VK_4 = 52,
            VK_5 = 53,
            VK_6 = 54,
            VK_7 = 55,
            VK_8 = 56,
            VK_9 = 57,
            VK_A = 65,
            VK_B = 66,
            VK_C = 67,
            VK_D = 68,
            VK_E = 69,
            VK_F = 70,
            VK_G = 71,
            VK_H = 72,
            VK_I = 73,
            VK_J = 74,
            VK_K = 75,
            VK_L = 76,
            VK_M = 77,
            VK_N = 78,
            VK_O = 79,
            VK_P = 80,
            VK_Q = 81,
            VK_R = 82,
            VK_S = 83,
            VK_T = 84,
            VK_U = 85,
            VK_V = 86,
            VK_W = 87,
            VK_X = 88,
            VK_Y = 89,
            VK_Z = 90
        }
    }


    [Serializable()]
    public class HotKey
    {

        private int m_id;
        private KeyCodes.Modifier m_modifiers;
        private KeyCodes.VirtualKey m_virtkey;


        public HotKey(int ID, KeyCodes.Modifier Modifiers, KeyCodes.VirtualKey VirtualKey)
        {
            m_id = ID;
            m_modifiers = Modifiers;
            m_virtkey = VirtualKey;
        }
        public int ID
        {
            get
            {
                return m_id;
            }
            set
            {
                m_id = value;
            }
        }
        public KeyCodes.Modifier Modifiers
        {
            get
            {
                return m_modifiers;
            }
            set
            {
                m_modifiers = value;
            }
        }
        public KeyCodes.VirtualKey VirtualKey
        {
            get
            {
                return m_virtkey;
            }
            set
            {
                m_virtkey = value;
            }
        }
    }

}
